package apuesta.dto;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.NamedNativeQueries;
import org.hibernate.annotations.NamedNativeQuery;

/*@NamedNativeQueries({
    @NamedNativeQuery(
	name = "query_eventosAcabados",
    query = "select  * from t_evento where Id_EstadoEvento = 1",
    resultClass = EventoDto.class)
})*/	

/*@NamedNativeQueries({
	@NamedNativeQuery(
	name = "query_eventosAprobados",
	query = "select * from t_evento where id_EstadoEvento = 2",
	resultClass = EventoDto.class
	)
})*/

@Entity
@Table(name="t_evento")
@NamedQueries({
	@NamedQuery(
    		name = "query_eventosModificables",
    	    query = "select e from EventoDto e join e.estadoEvento o where o.id_estadoEvento  = 1 or o.id_estadoEvento  = 2  "),
    @NamedQuery(
    		name = "query_eventosTerminados",
    	    query = "select e FROM EventoDto e  join e.estadoEvento d where d.id_estadoEvento = 5"),
	@NamedQuery(
    		name = "query_eventosPendientes",
    	    query = "select e from EventoDto e join e.estadoEvento o where o.id_estadoEvento  = 1"),
    @NamedQuery(
    		name = "query_eventosEnCurso",
    	    query = "select e from EventoDto e join e.estadoEvento o where o.id_estadoEvento  = 4")
    /*@NamedQuery(
    		name = "query_eventosAprobados",
    	    query = "select e from EventoDto e join e.estadoEvento o where o.id_estadoEvento  = 2")*/
	
})
public class EventoDto {
	
	@Id
	@Column(name="Id_Evento")
	private int id_evento;
	@Column(name="Fecha_Evento")
	private Date fecha_evento;
	@Column(name="Apuesta_Evento")
	private double apuesta_evento;
    @ManyToOne
	@JoinColumn(name="Id_Disciplina")
	private DisciplinaDto disciplina;
    @ManyToOne
	@JoinColumn(name="Id_EquipoLocal")
	private EquipoDto equipoLocal;
    @ManyToOne
	@JoinColumn(name="Id_EquipoVisitante")
	private EquipoDto equipoVisitante;
	@Column(name="Pozo_Evento")
	private double pozo_evento;
	@Column(name="ResultadoLocal_Evento")
	private Integer resulatdoLocal_evento;
	@Column(name="ResultadoVisitante_Evento")
	private Integer resulatdoVisitante_evento;
	@Column(name="Ganador_Evento")
	private Integer ganador_evento;
	@ManyToOne
	@JoinColumn(name="Id_EstadoEvento")
	private EstadoEventoDto estadoEvento;	
	@Column(name="Descripcion_Evento")
	private String descripcion_evento;
	@OneToMany(mappedBy="evento")
	private List<ApuestaDto> apuestas;
	@OneToMany(mappedBy="evento")
	private List<ResultadoDto> resultados;
	@Column(name="Cantidad_Generada")
	private Double cantidad_generada;
	public int getId_evento() {
		return id_evento;
	}
	public void setId_evento(int id_evento) {
		this.id_evento = id_evento;
	}
	public Date getFecha_evento() {
		return fecha_evento;
	}
	public void setFecha_evento(Date fecha_evento) {
		this.fecha_evento = fecha_evento;
	}
	public double getApuesta_evento() {
		return apuesta_evento;
	}
	public void setApuesta_evento(double apuesta_evento) {
		this.apuesta_evento = apuesta_evento;
	}
	public DisciplinaDto getDisciplina() {
		return disciplina;
	}
	public void setDisciplina(DisciplinaDto disciplina) {
		this.disciplina = disciplina;
	}
	public EquipoDto getEquipoLocal() {
		return equipoLocal;
	}
	public void setEquipoLocal(EquipoDto equipoLocal) {
		this.equipoLocal = equipoLocal;
	}
	public EquipoDto getEquipoVisitante() {
		return equipoVisitante;
	}
	public void setEquipoVisitante(EquipoDto equipoVisitante) {
		this.equipoVisitante = equipoVisitante;
	}
	public double getPozo_evento() {
		return pozo_evento;
	}
	public void setPozo_evento(double pozo_evento) {
		this.pozo_evento = pozo_evento;
	}
	public Integer getResulatdoLocal_evento() {
		return resulatdoLocal_evento;
	}
	public void setResulatdoLocal_evento(Integer resulatdoLocal_evento) {
		this.resulatdoLocal_evento = resulatdoLocal_evento;
	}
	public Integer getResulatdoVisitante_evento() {
		return resulatdoVisitante_evento;
	}
	public void setResulatdoVisitante_evento(Integer resulatdoVisitante_evento) {
		this.resulatdoVisitante_evento = resulatdoVisitante_evento;
	}
	public Integer getGanador_evento() {
		return ganador_evento;
	}
	public void setGanador_evento(Integer ganador_evento) {
		this.ganador_evento = ganador_evento;
	}
	public EstadoEventoDto getEstadoEvento() {
		return estadoEvento;
	}
	public void setEstadoEvento(EstadoEventoDto estadoEvento) {
		this.estadoEvento = estadoEvento;
	}
	public String getDescripcion_evento() {
		return descripcion_evento;
	}
	public void setDescripcion_evento(String descripcion_evento) {
		this.descripcion_evento = descripcion_evento;
	}
	public List<ApuestaDto> getApuestas() {
		return apuestas;
	}
	public void setApuestas(List<ApuestaDto> apuestas) {
		this.apuestas = apuestas;
	}
	public List<ResultadoDto> getResultados() {
		return resultados;
	}
	public void setResultados(List<ResultadoDto> resultados) {
		this.resultados = resultados;
	}
	public Double getCantidad_generada() {
		return cantidad_generada;
	}
	public void setCantidad_generada(Double cantidad_generada) {
		this.cantidad_generada = cantidad_generada;
	}
	
	
}
